package edu.jimei.projecttachy.service;

import edu.jimei.projecttachy.repository.MessageRepository;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 数据大屏服务类，负责处理数据可视化大屏相关的数据组装和图表配置
 * 提供各类统计图表数据，支持前端可视化展示
 */
@Service
public class DataScreenService {

    private final MessageRepository messageRepository;

    /**
     * 构造函数，注入消息仓库依赖
     * @param messageRepository 消息数据访问接口
     */
    public DataScreenService(MessageRepository messageRepository) {
        this.messageRepository = messageRepository;
    }

    /**
     * 获取主数据大屏的统计图表数据
     * 目前包含消息总量统计饼图，后续可扩展更多图表类型
     * @return List<Map<String, Object>> 图表配置和布局信息列表
     */
    public List<Map<String, Object>> getMainScreenData() {
        // --- Chart 1: Total Messages --- 获取消息总量统计数据
        long totalMessages = messageRepository.count();

        // 图表标题配置
        Map<String, Object> title = new HashMap<>();
        title.put("text", "消息总量 (Mock)");
        title.put("subtext", "系统中的消息总数");
        title.put("left", "center");

        // 图表提示框配置
        Map<String, Object> tooltip = new HashMap<>();
        tooltip.put("trigger", "item");

        // 图表系列数据配置
        Map<String, Object> series = new HashMap<>();
        series.put("name", "消息来源");
        series.put("type", "pie");
        series.put("radius", "50%");
        // 此处使用Mock数据，实际项目中应根据真实业务场景区分消息来源
        series.put("data", Arrays.asList(
                Map.of("value", totalMessages, "name", "用户消息"),
                Map.of("value", totalMessages, "name", "AI 回复") // Mock data
        ));
        // 图表高亮样式配置
        series.put("emphasis", Map.of(
                "itemStyle", Map.of(
                        "shadowBlur", 10,
                        "shadowOffsetX", 0,
                        "shadowColor", "rgba(0, 0, 0, 0.5)"
                )
        ));

        // 组装完整图表配置
        Map<String, Object> chartOption = new HashMap<>();
        chartOption.put("title", title);
        chartOption.put("tooltip", tooltip);
        chartOption.put("series",  Arrays.asList(series));

        // --- Widget Layout Info --- 配置图表组件布局信息
        Map<String, Object> widget = new HashMap<>();
        widget.put("id", "totalMessagesChart"); // 图表唯一标识
        widget.put("x", 0); // 组件x轴坐标
        widget.put("y", 0); // 组件y轴坐标
        widget.put("w", 4); // 组件宽度
        widget.put("h", 4); // 组件高度
        widget.put("option", chartOption); // 图表配置

        // 返回图表组件列表，支持多图表组合
        return List.of(widget);
    }
}